﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL
{
    public partial class Proyecto
    {
        public string getCorrelativo(dbGestionDataContext _db, int idProyectoTipo)
        {
            string numDocumento = "";

            int c = _db.Proyectos.Where(p => p.idProyectoTipo == idProyectoTipo).Count();
      
            if (c==0)
            {
                numDocumento = "001";
            }
            else
            {
                var q = _db.Proyectos.Where(p => p.idProyectoTipo == idProyectoTipo).Max(p => p.codigo);
                int numActual = int.Parse(q.ToString());
                numActual++;
                if (numActual < 10)
                {
                    numDocumento = "00" + numActual.ToString();
                }
                else if (numActual < 100)
                {
                    numDocumento = "0" + numActual.ToString();
                }
                else if (numActual >= 100)
                {
                    numDocumento =numActual.ToString();
                }

                else if (numActual > 999)
                {
                    throw new Exception("Limite  de Correlativo");
                }


            }
            return numDocumento;

        }
        public int getidAnterior(dbGestionDataContext _db, int idinternal,int idProyectoTipo)
        {
            int intAnterior = 0;

            int c = _db.Proyectos.Where(p => p.idInternal < idinternal & p.idProyectoTipo == idProyectoTipo).Count();
            if (c == 0)
            {
                throw new Exception("No existe Registros");
            }
            else
            {


                intAnterior = _db.Proyectos.Where(a => a.idInternal < idinternal & a.idProyectoTipo == idProyectoTipo).Max(a => a.idInternal);

            }

            
            return intAnterior;

        }
        public int getidSiguiente(dbGestionDataContext _db, int idinternal,int tipoProyecto)
        {
            int intSiguiente = 0;

            //revisar la sentencia generada

            int c = _db.Proyectos.Where(p => p.idInternal > idinternal & p.idProyectoTipo == idProyectoTipo).Count();

            if (c == 0)
            {
                throw new Exception("No existe Registros");
            }
            else
            {
                intSiguiente = _db.Proyectos.Where(p => p.idInternal > idinternal & p.idProyectoTipo == idProyectoTipo).Min(a => a.idInternal);
            }

            return intSiguiente;
        }
        public bool addProyectoContruccion(dbGestionDataContext _db,
                                string codigo,
                                string descripcion,
                                int idActividad,
                                int idEmpresa,
                                int idusuario,
                                string observacion,
                                bool bitActivo)
        {
            this.codigo = codigo;
            this.descripcion = descripcion;
            this.idActividad = idActividad;
            this.idEmpresa = idEmpresa;
            this.observacion = observacion;
            this.fechaCre = DateTime.Now;
            this.fechaMod = DateTime.Now;
            this.usuarioCre = idusuario;
            this.usuarioMod = idusuario;
            this.idProyectoTipo = 48;//contruccion
            this.bitActivo = bitActivo;

            _db.Proyectos.InsertOnSubmit(this);
           
            return true;

        }

        public bool updateProyectoContruccion(dbGestionDataContext _db,
                                   string descripcion,
                               int idActividad,
                               int idEmpresa,
                               int idusuario,
                               string observacion,
                                bool bitActivo)
        {
            this.codigo = codigo;
            this.descripcion = descripcion;
            this.idActividad = idActividad;
            this.idEmpresa = idEmpresa;
            this.observacion = observacion;
            this.fechaMod = DateTime.Now;
            this.usuarioMod = idusuario;
            this.bitActivo = bitActivo;
          
            return true;

        }



        public bool addProyectoVenta(dbGestionDataContext _db,
                                string codigo,
                                string descripcion,
                                int idActividad,
                                int idEmpresa,
                                int idusuario,
                                string observacion,
                                DateTime fechaInicio,
                                DateTime fechaFin,
                                string email,
                                string web,
                                int idDistrito,
                                string direccion,
                                string referencia,
                                string numPartida,
                                string numTomo,
                                string numFicha,
                                string numFoja,
                                string sede,
                                decimal area,
                                bool bitActivo,
                                string urbanizacion,
                                int idTipoFinanciamiento,
                                int? idPrograma,
                                string codigoPrograma
        )
        {
            this.codigo = codigo;
            this.descripcion = descripcion;
            this.idActividad = idActividad;
            this.idEmpresa = idEmpresa;
            this.observacion = observacion;
            this.fechaCre = DateTime.Now;
            this.fechaMod = DateTime.Now;
            this.usuarioCre = idusuario;
            this.usuarioMod = idusuario;
            
            this.fechaInicio=fechaInicio;
            this.fechaFin=fechaFin;
            this.email=email;
            this.web=web;
            this.idDistrito=idDistrito;
            this.direccion=direccion;
            this.referencia=referencia;
            this.numPartida=numPartida;
            this.numTomo=numTomo;
            this.numFicha=numFicha;
            this.numFoja=numFoja;
            this.sede=sede;
            this.area = area;
            this.bitActivo = bitActivo;
            this.urbanizacion = urbanizacion;
            //financiamiento
            this.idTipoFinanciamiento = idTipoFinanciamiento;
            this.idPrograma = (idTipoFinanciamiento == 1) ? null : idPrograma;
            this.codigoPrograma = (codigoPrograma == null) ? "" : codigoPrograma;


            this.idProyectoTipo = 50;//contruccion

            _db.Proyectos.InsertOnSubmit(this);
            
            return true;

        }

        public void updateProyectoVenta(dbGestionDataContext _db,
                               string descripcion,
                               int idActividad,
                               int idEmpresa,
                               int idusuario,
                               string observacion,
                               DateTime fechaInicio,
                                DateTime fechaFin,
                                string email,
                                string web,
                                int idDistrito,
                                string direccion,
                                string referencia,
                                string numPartida,
                                string numTomo,
                                string numFicha,
                                string numFoja,
                                string sede,
                                decimal area,
                                bool bitActivo,
                                string urbanizacion,
                                int idTipoFinanciamiento,
                                int? idPrograma,
                                string codigoPrograma,
                                int? idArchivo)
        {
            this.codigo = codigo;
            this.descripcion = descripcion;
            this.idActividad = idActividad;
            this.idEmpresa = idEmpresa;
            this.observacion = observacion;
            
            this.fechaMod = DateTime.Now;
            this.usuarioMod = idusuario;
            this.fechaInicio = fechaInicio;
            this.fechaFin = fechaFin;
            this.email = email;
            this.web = web;
            this.idDistrito = idDistrito;
            this.direccion = direccion;
            this.referencia = referencia;
            this.numPartida = numPartida;
            this.numTomo = numTomo;
            this.numFicha = numFicha;
            this.numFoja = numFoja;
            this.sede = sede;
            this.area = area;
            this.bitActivo = bitActivo;
            this.urbanizacion = urbanizacion;
            this.idArchivo = idArchivo;

            //financiamiento
            this.idTipoFinanciamiento = idTipoFinanciamiento;
            this.idPrograma = (idTipoFinanciamiento == 1) ? null : idPrograma;
            this.codigoPrograma = (codigoPrograma == null) ? "" : codigoPrograma;
        }


        public void updatePlanoEtapa(int idArchivoPlano)
        {
            this.idArchivo = idArchivoPlano;

        }

        public void updateContratoSeparacion(int idArchivoSeparacion, string usuarioUploadSeparacion)
        {
            this.idArchivoContSep = idArchivoSeparacion;
            this.usuarioContSep = usuarioUploadSeparacion;
            this.fechaContSep = DateTime.Now;


        }

        public void updateContratoVenta(int idArchivoVenta, 
                                        string usuarioUploadVenta)
        {
            this.idArchivoContVen = idArchivoVenta;
            this.usuarioContVen   = usuarioUploadVenta;
            this.fechaContVen     = DateTime.Now;


        }

    }



}
